Associating advertisements and game data in a flash-based gaming environment

ABSTRACT

A method of associating a service with a computer software product includes loading an executable software file containing software code that upon execution carries out a software program, inputting code into functions of the software file, mapping execution of the functions of the software file, receiving an input identifying a content trigger, identifying a function of the software file associated with the content trigger, and modifying the function associated with the content trigger to cause presentation of service in response to an occurrence of the content trigger. An enhanced software file may be produced that includes the modified function.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation in part of U.S. patent applicationSer. No. 12/1349,050, filed Jan. 6, 2009, and entitled “ASSOCIATINGADVERTISEMENTS AND GAME DATA IN A FLASH-BASED GAMING ENVIRONMENT.”

FIELD

The subject of the disclosure relates generally to service insertionwithin a gaming environment. More specifically, the disclosure relatesto associating advertisements and game data in a FLASH-based gamingenvironment.

SUMMARY

The Adobe Flash player is a widely available graphical run-timecomputing environment. It runs on devices ranging from cellular phonesto personal computers and is compatible with most operating systemscommonly found on such devices. Although originally developed as anenvironment for producing computer animation sequences and movies, thisubiquitous support has also made it a popular choice as a programmingand run-time environment for delivering online video games to consumers.

The executable game format delivered from game developers to gamepublishers and distributors is Adobe's proprietary Flash SWF (ShockwaveFlash) file format. This file consists of binary bytecode instructionsand data that is interpreted at runtime by the Flash player applicationto render the interactive game.

Game publishers and distributors seek to monetize games with a varietyof business models including advertising-driven revenue. They may alsowish to create a social environment around online Flash games thatallows players to compete head to head, compare scores, issue challengesand track their competitor's progress. Flash games as built by thedeveloper and delivered to the publisher do not typically allow apublisher to build advertising into the game or determine the player'scurrent score and progress through a game as it is played.

A representative implementation includes a service insertion toolset andprocess by which games delivered in the Adobe SWF executable file formatcan be enhanced, without access to any of the source code files,graphics, fonts or data. While the types of enhancements that can bemade with this service insertion toolset are virtually unlimited, thecurrent process applies most directly to enhancements related to addingin-game advertising as well as extracting score and progress informationfrom an actively running game. The types of advertising that can beenabled with this service insertion toolset and process include but arenot limited to pre-roll, interstitial and post-roll video ads that occurduring natural breaking points in game play, overlay ads that appearduring game play without being overly intrusive on the game playexperience and product placement advertisements in which branded imageryis added in context to the game play scene. It should be noted thatwhile the present disclosure describes several representativeembodiments in terms of using Adobe Flash software, this descriptionshould not be interpreted to limit embodiments to use of only the AdobeFlash software product.

In a first representative embodiment, a method of associating a servicewith a computer software product includes loading an executable softwarefile containing software code that upon execution carries out a softwareprogram, receiving an input identifying a content trigger within thesoftware program, identifying a function of the software file associatedwith the content trigger, and modifying the function of the softwarefile. The function is configured to cause presentation of content inresponse to an occurrence of the content trigger. The method may furtherinclude producing an enhanced software file that includes the modifiedfunction.

In a second representative embodiment, a tool for associating a servicewith a computer software product includes a viewer and a processor. Theviewer is configured to present a software program in a user interfaceand receive user inputs through the user interface. The processor isconfigured to execute programmed instructions to receive an inputthrough the user interface identifying a content trigger within thesoftware program, identify a function of a software file associated withthe content trigger, and modify the function of the software file. Thefunction is configured to cause presentation of content in response toan occurrence of the content trigger. The processor may be furtherconfigured to produce an enhanced software file that includes themodified function.

In a third representative embodiment, a computer-readable medium hascomputer-readable instructions stored thereon that, when executed by aprocessor, cause a computing device to load an executable software filecontaining software code that upon execution carries out a softwareprogram, receive an input identifying a content trigger within thesoftware program, identify a function of the software file associatedwith the content trigger, and modify the function of the software file.The function is configured to cause presentation of content in responseto an occurrence of the content trigger.

Other principal features and advantages will become apparent to thoseskilled in the art upon review of the following drawings, the detaileddescription, and the appended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

Representative embodiments will hereafter be described with reference tothe accompanying drawings.

FIG. 1 is a flow diagram illustrating operations performed by anadvertising delivery system in accordance with a representativeembodiment.

FIG. 2 is a block diagram illustrating a service insertion tool inaccordance with a representative embodiment.

FIG. 3 is a graphical user interface (GUI) for controlling the serviceinsertion tool of FIG. 2 in accordance with a representative embodiment.

FIG. 4 is a GUI for controlling the service insertion tool of FIG. 2 inaccordance with a representative embodiment.

FIG. 5 is a GUI for controlling the service insertion tool of FIG. 2 inaccordance with a representative embodiment.

FIG. 6 is a GUI for controlling the service insertion tool of FIG. 2 inaccordance with a representative embodiment.

FIG. 7 is a general block diagram showing a beaconing service inaccordance with a representative embodiment.

DETAILED DESCRIPTION

The Adobe Flash system includes a visual development environment thatsaves and works with Flash programs in their “source code” format, whichis a proprietary binary-formatted FLA file. When a Flash movie or gameis distributed to end users, the Flash development environment“publishes” the service into an executable form. This executable form ofFlash service is a proprietary binary-formatted SWF file containingbytecode instructions and data that completely specify the execution ofthe service. The Flash player is the run-time environment that isresponsible for interpreting and executing the bytecode and data in theSWF file.

SWF files contain a series of tags that describe the visual elements andsounds used in the game, along with their movements and transformations.In addition to these tags, the developer of the game can include logicwritten in the ActionScript scripting language. During the publishingprocess, this ActionScript logic is transformed from its textualrepresentation to a bytecode representation in the SWF file. While not acompletely reversible process, it is possible however to re-interpretthis bytecode representation such that the original ActionScript thatproduced it is approximated sufficiently to allow its modification usinga service or advertisement insertion tool.

To demonstrate the operation of a representative embodiment, a set ofcommercially available online SWF game files from well known gamedevelopment studios were used. These SWF game files were obtained eitherdirectly from the game development studio itself or from a publisher ofthe game. In all cases, the games were the standard issue as would begiven to any and all publishers of the game.

FIG. 1 is a flow diagram illustrating operations performed by anadvertising delivery system in accordance with a representativeembodiment. Additional, fewer, or different operations may be performedin alternative embodiments. In a representative embodiment, the deliverysystem allows for the insertion of a service that causes a presentationof advertisements within a FLASH program. In an alternative embodiment,the inserted service may cause a presentation of other content such as asurvey or information regarding rival players or may cause an extractionof player achievement data. In an operation 10, a service insertion toolloads a SWF program file such as a SWF file for a game. In an operation12, the service insertion tool modifies each function within the SWFgame file by inserting a small portion of bytecode at the beginning ofeach function body. A function includes logic designated to cause theexecution of various tasks by the Flash program. The functions can bedefined by specific Flash bytecode instructions such as DefineFunction,DefineFunction2 for ActionScript 2.0, or AbcMethod table forActionScript 3.0. The inserted bytecode creates a run-time output of astring that uniquely identifies the respective function within the SWFgame file. In an operation 14, the game is played and the serviceinsertion tool collects the run-time string outputs as the game isplayed. The service insertion tool uses the run-time string outputs tomap the use of the functions throughout execution of the SWF game file.In this way, the service insertion tool can identify what functions arebeing utilized at varying points in the game.

In an operation 16, the service insertion tool receives an input from atechnician indicating that the next action or input from the technicianis to be a trigger for an advertisement or other type of content. In anoperation 18, the service insertion tool receives a second input fromthe technician designating a frame or spot within the game where anadvertisement or other content is to be triggered. Such a frame or spotmay include the end of a level, the end of the game, or another spotwithin the game where the game is inactive and awaiting a user input. Inan illustrative embodiment, the input may be a selection of a next levelbutton or start new game button by the technician. In an operation 20,the service insertion tool identifies the first function executed in theSWF game file as a result of the input received from the techniciandesignating the advertisement trigger. The service insertion toolidentifies the first function based on the run-time string outputs andthe mapped function use of the SWF file. The first function is a handlerfor the Flash object that represents the input received from thetechnician indicating the advertisement trigger. For example, the firstfunction may be the handler for the Flash object representing a “nextlevel” or “play again” button selected by the technician as theadvertisement trigger. This handler function contains Flash bytecodethat causes execution of the game to resume at an appropriate point,such as when a user selects the “next level” or “play again” button.

In an operation 22, the bytecode of the first function is modified toinclude additional logic that when executed causes a selectedadvertisement or other content to be presented in response to anoccurrence of the designated advertisement trigger. At the conclusion ofthe advertisement, the handler function executes its original bytecodelogic so that the game is resumed again at the appropriate point aftertermination of the advertisement. In an operation 24, the original SWFgame file is transformed into a new enhanced SWF game file. As such, themodified bytecode of the functions used to cause the presentation of theadvertisements is inserted into a new enhanced SWF game file along withthe remaining unchanged portions of the original SWF game file. In anoperation 26, the service insertion tool plays the game again allowingthe technician to verify that the advertisement or other content istriggered and displayed as expected and that the game otherwisefunctions properly.

The service insertion tool allows a technician without specialized skillor knowledge in Flash programming or other types of programming toeasily and efficiently insert a service that causes content such asadvertisements to be presented in a Flash game. The service insertiontool also allows the enhanced SWF game file to be easily and quicklyre-configured if and when the service insertion tool and original SWFgame file are updated.

According to a representative embodiment, when the transformation isapplied, only those elements of the game SWF that have modifiedfunctions are transformed in any way. The remaining elements of the SWFfile are not modified. When the enhanced game SWF file is produced,those non-transformed elements of the SWF file are written to theenhanced game SWF file with exactly the same byte sequence as in theoriginal game SWF file. Thus, any elements of the SWF file that are notinvolved in the transformation are guaranteed immutable and not subjectto faulty interpretation and modification in the enhanced game SWF.

Later, when the game is played by a game player content may be presentedin response to an occurrence of the selected content triggers based onan established service policy. A service policy may be downloaded at thestart of the game from a service policy server or may be alternativelycommunicated to the enhanced game SWF file. The service policy containsinstructions as to what content will be presented, when the content willbe presented, and how the content will be presented.

The following further describes the service insertion tool and processused to transform a SWF-based game into a new enhanced SWF file thatcontains additional logic to display content such as videoadvertisements at appropriate points during game play as well astriggering events containing player achievement information that can beused by the hosting container (e.g. a website) to enable community basedfeatures.

FIG. 2 illustrates components in a representative service insertion tool28. Service insertion tool 28 includes a GUI-based viewer 32 and aprocessor 34. An original SWF file 30 is inputted into service insertiontool 28. Original SWF file 30 includes all logic necessary to executethe corresponding Flash program or game. Original SWF file 30 is loadedinto service insertion tool 28. Viewer 32 displays the running Flashprogram or game and presents a user interface that allows a technicianto interact with the game. Viewer 32 is further configured to receiveinputs from the technician. Processor 34 is programmed to analyze thebytecode instructions contained in original SWF file 30, process inputsreceived from the technician, and implement modifications to theoriginal SWF file 30 to cause content such as advertisements to bepresented. Processor 34 may implement modifications by insertingpre-defined blocks of logic that handle initialization of datastructures and execution of a service that causes content such aspreroll and interstitial advertisements to be presented. Serviceinsertion tool 28 produces an enhanced SWF file 36. Enhanced SWF file 36includes the logic modified to insert a service that causes content andadvertisements to be presented and any original logic that wasunmodified during the service insertion process.

FIG. 3 illustrates a representative GUI (graphical user interface) 40.GUI 40 includes sections 42, 44, 46, and 48. Section 42 includes a panelshowing the game running in an instance of the Flash player. The Flashgame in section 42 is interactive and can be played. Within section 42is an ad insertion button 43. Selection of ad insertion button 43indicates that the next action or input from the technician is todesignate a trigger for an advertisement or other type of content.Section 44 provides a visual representation of the properties in theheader of the Flash program at the top and below a hierarchicalrepresentation of all the bytecode contained in the file. The bytecodeis divided into a series of frames, each containing a hierarchical setof tags. While the game is being played, the frame number that is activemay be highlighted in section 44. Section 46 may include the functioncurrently be executed as the game is played as well as a list of pastfunctions that were previously executed.

Modifications to the SWF file can cause presentation of a pre-rolladvertisement (e.g., a video ad displayed during the initializationsequence for the game), presentation of an interstitial advertisement(e.g., a recurring video advertisement displayed during a naturalbreaking point in the game, such as between levels), and, at variouspoints during game play, extraction of the user's score and generationof an event that is passed out from the Flash game to a website. To playan advertisement, the technician identifies a point where the Flash gameplayback can be paused while a video advertisement is shown. After aselection of ad insertion button 43, the next action or input from thetechnician received by the tool signifies a trigger for anadvertisement. The service insertion tool determines the first functionexecuted after this action or input from the technician and modifiesthis function to play an advertisement prior to resuming the game. FIG.4 shows a representative graphical user interface after selection of atrigger. In an embodiment, after the action or input from the technicianidentifying the trigger, the service insertion tool may present a window50 providing several possible functions to serve as triggers for theadvertisement. As such, the service insertion tool may receive aselection of the precise function to serve as the trigger from thetechnician.

FIG. 5 shows a representative graphical user interface prior toselection of a function that starts a new game. An appropriate place toshow a preroll advertisement is immediately before invoking thisfunction. Therefore, the technician can select this as the point toinsert the preroll advertisement and a pre-defined block of logic thatplays an advertisement is inserted prior to this function by the serviceinsertion tool. The function is modified such that logic to play anadvertisement is inserted ahead this function call. When theadvertisement is done, the advertisement playing logic invokes thefunction that starts the next level.

Similarly, the technician may identify a point in game play that occursat a natural breaking point, such as between levels of a game. FIG. 6shows a representative graphical user interface after completion of alevel of the game. The technician may submit an input designating atrigger for the advertisement (i.e., selection of a next level button).The service insertion tool identifies a block of logic within the gameSWF file that is executed at each of these break points, and selects afunction ahead of which the logic for displaying an advertisement isinserted.

For extracting and exposing player achievement information, the serviceinsertion tool identifies the variable(s) within the SWF game logic thatstore the player's score, current level, and other items of interest.Once these variables are identified, the service insertion tool insertslogic into the game SWF to trigger an event that passes the value ofthis variable out to the container that is hosting the game SWF. In mostcases, this event is exposed to the JavaScript in the web page that ishosting the Flash player object.

At the end of the process described above, the technician and serviceinsertion tool have produced an enhanced game SWF file. The output ofthe service insertion tool is the enhanced game SWF file in which theuser experience of the game remains identical to the original with theexception of the addition of a service that may cause videoadvertisements to be presented at specific points during game play. Thisenhanced game SWF file is saved and can be packaged and distributed inthe same manner as the original game. Because the advertisement displaylogic is built right into the SWF game file itself, even if unauthorizedwebsites obtain and host this modified game, they will also displayadvertisements and the advertisement revenue will flow to the companythat originally hosted the enhanced game SWF. This scenario is incontrast to the traditional model of generating advertising revenue forhosted Flash games in which the SWF game file itself contains noadvertisement display logic. In this case, advertisements are displayedby the HTML page that surrounds the Flash player object that isexecuting the game. In this case, any unauthorized capture and hostingof the game SWF file will enable an unauthorized website to host thegame without any advertising revenue going to the company thatoriginally hosted the game SWF.

In another representative embodiment, a pre-roll advertisement is addedautomatically without involvement of a technician. Automatic addition ofa pre-roll advertisement includes the addition of preroll advertisementdelivery bytecode logic at the beginning of a computer program, such asa game, prior to any of the game bytecode being executed. In some cases,adding a bytecode requires the creation of a new frame on the main Flashtimeline. In other cases, such an addition requires reordering ofexisting frames on the timeline and/or scanning all the bytecode withinthe file to adjust any references within the bytecode to absolute framenumbers, which are changed as a result of the addition of a new framefor the preroll advertisement at the beginning of the SWF.

In yet another representative embodiment, a beaconing service isincluded with the Flash game that does not require a technician toexamine the game and define the transformation operation. FIG. 7illustrates a beaconing operation in which a message is sent from acomputer 72 on which the game is played to a server 74 via a network 76.The message provides information regarding the game session durationswhile the game is being played. As such, the server 74 can receiveinformation on the length of each game play session. Without suchmessaging, an operator of a Flash gaming website cannot determine howlong each game play session lasts because after the game SWF is loadedonto the webpage and starts executing, it typically no longer makes anycontact with the server. Without the beacon messages, the websiteoperator does not know at what point the user closes the browser windowor navigates away from the page hosting the game SWF to another page.With the beaconing messages added to the game, the website operatorknows, subject to the frequency of the messages, how long the user'sgame session lasts.

It is important to understand that any of the embodiments describedherein may be implemented as computer-readable instructions stored on acomputer-readable medium. Upon execution by a processor, thecomputer-readable instructions can cause a computing device to performoperations to implement any of the embodiments described herein. Forexample, in an embodiment, the service insertion tool may be stored on amemory of a computer as a computer-readable medium. The memory may beoperatively connected to a CPU which may process the computer-readablemedium thereby running the service insertion tool. In addition, the CPUand the memory may be connected to a display which is configured topresent visual representations of the service insertion tool.

The foregoing description has been presented for purposes ofillustration and of description. It is not intended to be exhaustive orlimiting with respect to the precise form disclosed, and modificationsand variations are possible in light of the above teachings or may beacquired from practice of the disclosed embodiments.

1. A method of associating a service with a computer software product,the method comprising: loading an executable software file containingsoftware code that upon execution carries out a software program;receiving, via a user interface of a service insertion tool, an inputidentifying a content trigger within the software program; identifying,via the service insertion tool, a function of the software fileassociated with the content trigger; and modifying, via the serviceinsertion tool, the function of the software file, wherein the functionis configured to cause presentation of content in response to anoccurrence of the content trigger.
 2. The method of claim 1, wherein thesoftware program includes a software game.
 3. The method of claim 1,further comprising: inserting code into a plurality of functions of thesoftware file via the service insertion tool; and mapping, via theservice insertion tool, execution of the plurality of functions duringexecution of the software file.
 4. The method of claim 2, furthercomprising presenting a player interface in the user interface, whereinthe player interface presents the software game.
 5. The method of claim3, further comprising presenting a first visual representation of headerproperties of the software program and a second visual representation ofexecuted functions of the software file.
 6. The method of claim 4,wherein the bytecode is divided into a series of frames.
 7. The methodof claim 1, wherein the software program is a Flash program including agame.
 8. The method of claim 1, further comprising receiving, via theuser interface of the service insertion tool, a second input configuredto indicate that a subsequent input will identify the service trigger.9. The method of claim 1, wherein the user interface is configured topresent output of the software program during execution and receiveinput associated with points in time during runtime of the softwareprogram.
 10. The method of claim 1, further comprising producing anenhanced software file comprising the modified function.
 11. A tool forassociating a service with a computer software product, the toolcomprising: a viewer configured to present a software program in a userinterface and receive user inputs via the user interface; and aprocessor configured to execute programmed instructions to receive aninput, via the user interface, identifying a content trigger within thesoftware program; identify a function of a software file for thesoftware program, wherein the function is associated with the contenttrigger; and modify the function of the software file, wherein thefunction is configured to cause presentation of content in response toan occurrence of the content trigger.
 12. The tool of claim 11, whereinthe software program includes a software game.
 13. The tool of claim 11,wherein the processor is further configured to: insert code into aplurality of functions of the software file; and map execution of theplurality of functions during execution of the software file.
 14. Thetool of claim 11, wherein the software file is a Shockwave Flash file.15. The tool of claim 11, wherein the user interface includes a softwareprogram player that presents the software program.
 16. The tool of claim11, wherein the user interface includes an input section for receiving asecond input indicating that a subsequent input will identify thecontent trigger.
 17. The tool of claim 11, wherein the software programincludes a game.
 18. The tool of claim 11, wherein the processor isfurther configured to produce an enhanced software file comprising themodified function.
 19. A computer-readable medium havingcomputer-readable instructions stored thereon, which when executed by aprocessor, cause a computing device to: load an executable software filecontaining software code that upon execution carries out a softwareprogram; receive an input identifying a content trigger within thesoftware program; identify a function of the software file associatedwith the content trigger; and modify the function of the software file,wherein the function is configured to cause presentation of content inresponse to an occurrence of the content trigger.
 20. Thecomputer-readable medium of claim 19, wherein the software program is aFlash program including a game.
 21. The computer-readable medium ofclaim 20, wherein the computer-readable instructions further cause acomputing device to: input code into a plurality of functions of thesoftware file; and map execution of the plurality of functions duringexecution of the software file.